knitr::opts_chunk$set(echo = TRUE)

Preparativos

# Carga de paquetes 
library(dplyr)
library(sf)
library(DT)
library(plotly)
library(leaflet)
library(raster)
#  Registros de presencia de JUnco vulcani
primates <-
  st_read(
    "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/gbif/primates-cr-registros.csv",
    options = c(
      "X_POSSIBLE_NAMES=decimalLongitude",
      "Y_POSSIBLE_NAMES=decimalLatitude"
    ),
    quiet = TRUE
  )

# Asignacion de CRS
st_crs(primates) = 4326

# Capa geoespacil de cantones
# Carga de la capa de cantones
cantones <-
  st_read(
    "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/ign/delimitacion-territorial-administrativa/cr_cantones_simp_wgs84.geojson",
    quiet = TRUE
  )
# Cruce espacial con la tabla de cantones, para obtener el nombre del cantón
primates <-
  primates %>%
  st_join(cantones["canton"])


Introduccion

Se utilisa el conjunto de datos sobre 4 especies de primates de Costa Rica. Ateles geoffroyi, Cebus capucinus, Alouatta palliata, Saimiri oerstedii que se refieren respectivamente al mono araña, mono carablanca, mono congo y mono ardilla.


Tabla de registros de presencia

# Tabla de registros de presencia
primates %>%
  st_drop_geometry() %>%
  dplyr::select(family, species, stateProvince, canton, locality, eventDate) %>%
  datatable(
    colnames = c("Familia","Especie","Provincia", "Canton", "Localidad", "Fecha"),
    options = list(searchHighlight = TRUE)
  )


Gráfico pastel

# cargar colores
colors <- c('rgb(211,94,96)', 'rgb(128,133,133)', 'rgb(144,103,167)', 'rgb(171,104,87)')

#grafico pastel 
plot_ly(
  primates,
  labels = ~ species,
  type = "pie",
  textposition = "inside",
  textinfo = "label+percent",
  insidetextfont = list(color = "#FFFFFF"),
  marker = list(colors = colors)) %>%
  layout(
    title = "Cantidad de registros para cada especie de primate",
    xaxis = list(
      showgrid = FALSE,
      zeroline = FALSE,
      showticklabels = FALSE
    ),
    yaxis = list(
      showgrid = FALSE,
      zeroline = FALSE,
      showticklabels = FALSE
    )
  )


Mapa

# Selección de la especie de primate
# capa de Ateles geoffroyi
Ateles_geoffroyi <-
  primates %>%
  filter(species == "Ateles geoffroyi")

# capa de Cebus capucinus
Cebus_capucinus <-
  primates %>%
  filter(species == "Cebus capucinus")

# capa de Alouatta palliata
Alouatta_palliata <-
  primates %>%
  filter(species == "Alouatta palliata")

# capa de Saimiri oerstedii
Saimiri_oerstedii <-
  primates %>%
  filter(species == "Saimiri oerstedii")
# Especificación del directorio de trabajo (debe utilizarse una ruta existente)
setwd("C:/Users/SARA/Desktop/UCR/Procesamiento_de_datos_geograficos/Tareas y Proyectos/Tareas/Tarea03")

# Obtención de la capa de altitud
alt <- getData(
  "worldclim",
  var = "alt",
  res = .5,
  lon = -84,
  lat = 10
)

# Capa de altitud recortada para los límites exactos de Costa Rica
altitud <-
  alt %>%
  crop(cantones) %>%
  mask(cantones)

# Paleta de colores
pal <- colorNumeric(
  c("#006400", "#FFFF00", "chocolate1", "#FF0000"), 
  values(altitud), 
  na.color = "transparent"
)
# Mapa de registros de presencia
primates %>%
  dplyr::select(stateProvince,
                canton,
                locality,
                eventDate,
                family,
                species) %>%
  leaflet() %>%
  addProviderTiles(providers$OpenStreetMap.Mapnik, group = "OpenStreetMap") %>%
  addProviderTiles(providers$Stamen.TonerLite, group = "Stamen Toner Lite") %>%
  addProviderTiles(providers$Esri.WorldImagery, group = "Imágenes de ESRI") %>%
  addRasterImage(
    altitud, 
    colors = pal, 
    opacity = 0.7,
    group = "Capa raster"
  ) %>%  
  addPolygons(
    data = cantones,
    color = "tan4",
    fillColor = "transparent",
    stroke = TRUE,
    weight = 1.0,
  ) %>%
  addCircleMarkers(
    data = Ateles_geoffroyi,
    stroke = F,
    radius = 4,
    fillColor = 'gray',
    fillOpacity = 0.8,
    popup = paste(
      Ateles_geoffroyi$stateProvince,
      Ateles_geoffroyi$canton,
      Ateles_geoffroyi$locality,
      Ateles_geoffroyi$eventDate,
      Ateles_geoffroyi$family,
      Ateles_geoffroyi$species,
      sep = '<br/>'
    ),
    group = "Ateles geoffroyi"
  ) %>%
  addCircleMarkers(
    data = Cebus_capucinus,
    stroke = F,
    radius = 4,
    fillColor = 'blue',
    fillOpacity = 0.8,
    popup = paste(
      Cebus_capucinus$stateProvince,
      Cebus_capucinus$canton,
      Cebus_capucinus$locality,
      Cebus_capucinus$eventDate,
      Cebus_capucinus$family,
      Cebus_capucinus$species,
      sep = '<br/>'
    ),
    group = "Cebus capucinus"
  ) %>%
  addCircleMarkers(
    data = Alouatta_palliata,
    stroke = F,
    radius = 4,
    fillColor = "orange",
    fillOpacity = 0.8,
    popup = paste(
      Alouatta_palliata$stateProvince,
      Alouatta_palliata$canton,
      Alouatta_palliata$locality,
      Alouatta_palliata$eventDate,
      Alouatta_palliata$family,
      Alouatta_palliata$species,
      sep = '<br/>'
    ),
    group = "Alouatta palliata"
  ) %>%
  addCircleMarkers(
    data = Saimiri_oerstedii,
    stroke = F,
    radius = 4,
    fillColor = 'red',
    fillOpacity = 0.8,
    popup = paste(
      Saimiri_oerstedii$stateProvince,
      Saimiri_oerstedii$canton,
      Saimiri_oerstedii$locality,
      Saimiri_oerstedii$eventDate,
      Saimiri_oerstedii$family,
      Saimiri_oerstedii$species,
      sep = '<br/>'
    ),
    group = "Saimiri oerstedii"
  ) %>%
  addLayersControl(
    baseGroups = c("OpenStreetMap", "Stamen Toner Lite", "Imágenes de ESRI"),
    overlayGroups = c(
      "Ateles geoffroyi",
      "Cebus capucinus",
      "Alouatta palliata",
      "Saimiri oerstedii",
      "Capa raster"
    )
  ) %>%
  addMiniMap(
    tiles = providers$Stamen.OpenStreetMap.Mapnik,
    position = "bottomleft",
    toggleDisplay = TRUE
  )
# Mapeo
plot(altitud, main = "Distribucion de primates en Costa Rica")

plot(
  altitud,
  extent = extent(-86, -82.3, 8, 11.3),
  axes = TRUE,
  graticule = TRUE,
  reset = FALSE
)
plot(Saimiri_oerstedii, col = "red", add = TRUE)
plot(Ateles_geoffroyi, col = "green", add = TRUE)
plot(Alouatta_palliata, col = "orange", add = TRUE)
plot(Cebus_capucinus, col = "blue", add = TRUE)

# Paleta de colores
pal <- colorNumeric(
  c("#006400", "#FFFF00", "chocolate1", "#FF0000"), 
  values(altitud), 
  na.color = "transparent"
)

leaflet() %>%
  addTiles() %>%
  addRasterImage(
    altitud, 
    colors = pal, 
    opacity = 0.8
  ) %>%  
  addPolygons(
    data = cantones,
    color = "black",
    fillColor = "transparent",
    stroke = TRUE,
    weight = 1.0,
  ) %>%
  addCircleMarkers(
    data = Saimiri_oerstedii,
    stroke = F,
    radius = 4,
    fillColor = 'red',
    fillOpacity = 0.8
  )%>%
  addCircleMarkers(
    data = Ateles_geoffroyi,
    stroke = F,
    radius = 4,
    fillColor = 'green',
    fillOpacity = 0.8
  )%>%
  addCircleMarkers(
    data = Alouatta_palliata,
    stroke = F,
    radius = 4,
    fillColor = 'orange',
    fillOpacity = 0.8
  )%>%
  addCircleMarkers(
    data = Cebus_capucinus,
    stroke = F,
    radius = 4,
    fillColor = 'blue',
    fillOpacity = 0.8
  )